<!DOCTYPE HTML>
<html>

<head><meta name="generator" content="Hexo 3.9.0">
  <meta charset="utf-8">
  
  <title>StackExchange.Redis 系列 2：配置 | DeepThought</title>
  <meta name="google-site-verification" content="Ei6mmDdf-cJwox1RvJOeX8Dc720fqWjZQu-Ww2BjBt4">
  
  <meta name="author" content="积慕">
  
  <meta name="description" content="Redis Client,Redis 客户端,Redis, StackExchange.Redis,StackExchange,StackExchange.Redis 使用教程, StackExchange Redis, StackExchange 教程,NET Redis,net core redis, netcore redis,StackExchange.Redis 配置,StackExchange.Redis Config,ConfigurationOptions">
  
  
  <meta name="keywords" content="Redis Client,Redis 客户端,Redis, StackExchange.Redis,StackExchange,StackExchange.Redis 使用教程, StackExchange Redis, StackExchange 教程,NET Redis,net core redis, netcore redis,StackExchange.Redis 配置,StackExchange.Redis Config,ConfigurationOptions">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  
  <meta property="og:title" content="StackExchange.Redis 系列 2：配置">
  <meta property="og:site_name" content="DeepThought">

  
  <meta property="og:image" content>
  

  <link href="https://pic.zhuliang.ltd/favicon.ico" rel="shortcut icon" type="image/x-icon">
  <link rel="alternate" href="/atom.xml" title="DeepThought" type="application/atom+xml">
  <link rel="stylesheet" href="/css/style.css" media="screen" type="text/css">

  <link rel="stylesheet" href="//at.alicdn.com/t/font_1187293_8fec2ou5fyx.css">

  <!-- <link rel="stylesheet" href="//cdn.bootcss.com/highlight.js/9.6.0/styles/github.min.css"> -->
  <!-- <script src="//cdn.bootcss.com/highlight.js/9.6.0/highlight.min.js"></script> -->
  <script src="/js/highlight.min.js"></script>

  <link rel="stylesheet" href="/css/markdown.css">

  <script src="/js/av-min.3.0.4.js"></script>
  <script src="/js/Valine.min.1.3.6.js"></script>

</head></html>

<body>
  <header id="header" class="inner"><div class="alignleft">
  <h1><a href="/">DeepThought</a></h1>
  <h2><a href="/">知识需沉淀，更需分享</a></h2>
</div>
<nav id="main-nav" class="alignright">
  <ul>
    
      <li><a href="/">首页</a></li>
    
      <li><a href="/about">关于我</a></li>
    
      <li><a href="/atom.xml">订阅RSS</a></li>
    
  </ul>
  <div class="clearfix"></div>
</nav>
<div class="clearfix"></div>
        </header>
  <div id="content" class="inner">
    <div id="main-col" class="alignleft"><div id="wrapper"><article class="post">
  
  <div class="post-content">
    <header>
      
        <div class="icon"></div>
      

 
      
  
    <h1 class="title">StackExchange.Redis 系列 2：配置</h1>
  


      
        <time datetime="2020-01-06T02:08:59.000Z">
          create: 2020-01-06 10:08:59 | update: 2020-01-06 14:39:31
            <span style="float: right;">
    <span class="post-count" id="busuanzi_container_page_pv" style="display: inline;">
        
        本文总阅读量: <span id="busuanzi_value_page_pv"></span>&nbsp;次
        <span class="blueSeparate">&nbsp;|&nbsp;</span>
        
        <span class="post-count">文章总字数:&nbsp;1.6k&nbsp;字</span>
    <span class="blueSeparate">&nbsp;|&nbsp;</span>
    <span class="post-count">阅读约需:&nbsp;6&nbsp;分钟</span>
    <br>
</span>
</span>
        </time>
      
            
    </header>
    <div class="entry">
      
      <blockquote>
<ul>
<li>本系列博文是“伪”官方文档翻译，并非完全将官方文档进行翻译，而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。</li>
<li>原始文档见此：<a href="https://stackexchange.github.io/StackExchange.Redis/" target="_blank" rel="noopener">https://stackexchange.github.io/StackExchange.Redis/</a></li>
<li>本系列本博文基于 redis 5.0.6，系列中部分博文跟官方文档有出入，有不同见解 / 说明不当的地方，还请大家不吝拍砖。</li>
</ul>
</blockquote>
<h1 id="配置概述"><a href="#配置概述" class="headerlink" title="配置概述"></a>配置概述</h1><p>StackExchange.Redis 提供了丰富的配置，你可以在调用 Connect / ConnectAsync 方法的时候进行设定，如下</p>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">var conn = ConnectionMultiplexer.Connect(configuration);
</code></pre>
<ul>
<li>configuration 可以是一个 ConfigurationOptions “实例”或者一个 “代表配置内容的string 字符串”</li>
</ul>
<a id="more"></a>
<h1 id="使用说明"><a href="#使用说明" class="headerlink" title="使用说明"></a>使用说明</h1><blockquote>
<p>通过字符串来设定连接配置</p>
</blockquote>
<p><strong>基本使用：</strong></p>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">//以下配置将使用本地搭建的 Redis 单节点服务，默认端口号为 6379
var conn = ConnectionMultiplexer.Connect(&quot;localhost&quot;);
</code></pre>
<p><strong>增加额外选项：</strong></p>
<ul>
<li>Redis 的连接字符串跟 sql server 数据库连接字符串类似，可以在连接字符串中指定其他选项，唯一的区别在于不同配置之间使用“英文逗号”分割，如下：</li>
</ul>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">// 配置间用 &quot;英文逗号&quot; 分隔，选项用 &quot;=等号&quot; 以键值对的形式表示
//使用  redis0 和 redis1 这 2 个节点，端口均为 6380，并同时设定 allowAdmin 为 true
var conn = ConnectionMultiplexer.Connect(&quot;redis0:6380,redis1:6380,allowAdmin=true&quot;);
</code></pre>
<ul>
<li>注意，选项是用 “=” 号来区分属性和值，如这里的 allowAdmin，如果没有”=”号，会被识别为一个服务器节点。</li>
</ul>
<h2 id="字符串配置和配置实例之间的转换"><a href="#字符串配置和配置实例之间的转换" class="headerlink" title="字符串配置和配置实例之间的转换"></a>字符串配置和配置实例之间的转换</h2><blockquote>
<p>字符串配置和 ConfigurationOptions 实例之间可以很方便的转换，如下：</p>
</blockquote>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">// 配置字符串
var operationString = $&quot;{_redisSettings.Address}:{_redisSettings.Port}&quot;;
// 配置字符串----&gt;ConfigurationOptions 实例
var options = ConfigurationOptions.Parse(operationString);

//ConfigurationOptions 实例----&gt;配置字符串
var operationString = options.ToString()
</code></pre>
<h2 id="一个常规用法的例子"><a href="#一个常规用法的例子" class="headerlink" title="一个常规用法的例子"></a>一个常规用法的例子</h2><ul>
<li>一般将一些静态参数直接用字符串的形式表示，而一些动态参数用 ConfigurationOptions 对象来进行赋值<ul>
<li>静态参数：redis 连接字符串，虽然你可能会放到配置文件/配置系统系统中，但基本上可以认为连接字符串是”静态的“。</li>
<li>动态参数：诸如客户端名，是否运行执行管理员命令等。</li>
</ul>
</li>
</ul>
<p>例子：</p>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">public RedisClient(IOptions&lt;RedisSettings&gt; redisSettings)
{
    _redisSettings = redisSettings.Value;
    var options = ConfigurationOptions.Parse($&quot;{_redisSettings.Address}:{_redisSettings.Port}&quot;);

    options.ClientName = ConfigService.GetRedisClientName(); //动态从配置中心取
    options.AllowAdmin = ConfigService.GetIsAllowAdminOperation(); //动态从配置中心取

    var redis = ConnectionMultiplexer.Connect(options);
    _db = redis.GetDatabase(_redisSettings.DataBase);
}
</code></pre>
<h1 id="配置选项说明"><a href="#配置选项说明" class="headerlink" title="配置选项说明"></a>配置选项说明</h1><table>
<thead>
<tr>
<th>字符串配置方式</th>
<th>ConfigurationOptions 配置方式</th>
<th>默认值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>abortConnect={bool}</td>
<td>AbortOnConnectFail</td>
<td>true（Azure 中为 false）</td>
<td>若设定为 true，则当所有 redis 服务均不可用时，客户端不会自动创建连接。</td>
</tr>
<tr>
<td>allowAdmin={bool}</td>
<td>AllowAdmin</td>
<td>false</td>
<td>是否能使用风险命令，如 FLUSHDB 之类的命令。</td>
</tr>
<tr>
<td>channelPrefix={string}</td>
<td>ChannelPrefix</td>
<td>null</td>
<td>用于设定”发布/订阅“操作的频道前缀。</td>
</tr>
<tr>
<td>connectRetry={int}</td>
<td>ConnectRetry</td>
<td>3</td>
<td>设定初始化连接时重试次数。</td>
</tr>
<tr>
<td>connectTimeout={int}</td>
<td>ConnectTimeout</td>
<td>5000</td>
<td>单位：毫秒，用于设定连接超时时间。</td>
</tr>
<tr>
<td>configChannel={string}</td>
<td>ConfigurationChannel</td>
<td>__Booksleeve_MasterChanged</td>
<td>设定当配置更改时的广播频道名称。</td>
</tr>
<tr>
<td>configCheckSeconds={int}</td>
<td>ConfigCheckSeconds</td>
<td>60</td>
<td>单位：秒，用于设定检查配置的时间。可以利用该配置来充当心跳包功能。</td>
</tr>
<tr>
<td>defaultDatabase={int}</td>
<td>DefaultDatabase</td>
<td>null</td>
<td>设定默认数据库，</td>
</tr>
<tr>
<td>keepAlive={int}</td>
<td>KeepAlive</td>
<td>-1</td>
<td>用于设定”会话保持“时间，默认情况下，客户端会每 60s 发送一条消息到服务端以保持 socket 连接</td>
</tr>
<tr>
<td>name={string}</td>
<td>ClientName</td>
<td>null</td>
<td>标识在 redis 中的连接名/客户端名</td>
</tr>
<tr>
<td>password={string}</td>
<td>Password</td>
<td>null</td>
<td>用于设定 Redis 连接密码</td>
</tr>
<tr>
<td>proxy={proxyType}</td>
<td>Proxy</td>
<td>Proxy.None</td>
<td>设定代理类型，枚举 Proxy.None 或 Proxy.Twemproxy</td>
</tr>
<tr>
<td>resolveDns={bool}</td>
<td>ResolveDns</td>
<td>false</td>
<td>用于设定是否在连接前解析 DNS 终结点。若为 true，则在连接失败后重新建立连接的时候，先解析 DNS 终结点。</td>
</tr>
<tr>
<td>responseTimeout={int}</td>
<td>ResponseTimeout</td>
<td>SyncTimeout</td>
<td>单位：毫秒，响应超时时间，不建议使用，已经被标记为 Obsolete。</td>
</tr>
<tr>
<td>serviceName={string}</td>
<td>ServiceName</td>
<td>null</td>
<td>(截至本文发布，客户端尚未实现Sentinel相关功能)用于通过sentinel解析服务的服务名。</td>
</tr>
<tr>
<td>ssl={bool}</td>
<td>Ssl</td>
<td>false</td>
<td>显式指定是否使用 SSL 加密。</td>
</tr>
<tr>
<td>sslHost={string}</td>
<td>SslHost</td>
<td>null</td>
<td>设定使用 SSL 证书时的主机地址，一旦设定了该值，说明启用 SSL 模式。</td>
</tr>
<tr>
<td>sslProtocols={enum}</td>
<td>SslProtocols</td>
<td>null</td>
<td>设定加密连接协议，使用 ‘或运算符’ 来提供多个值，使用的是 SslProtocols 枚举值。</td>
</tr>
<tr>
<td>syncTimeout={int}</td>
<td>SyncTimeout</td>
<td>5000</td>
<td>单位：毫秒，设定同步超时的时间</td>
</tr>
<tr>
<td>tiebreaker={string}</td>
<td>TieBreaker</td>
<td>__Booksleeve_TieBreak</td>
<td>主从部署的时候，当master节点挂掉的时候，用于显式设定主节点，设定的时候终结点必须完全匹配</td>
</tr>
<tr>
<td>version={string}</td>
<td>DefaultVersion</td>
<td>2.0（Azuer中为3.0）</td>
<td>设定Redis的版本号，当且仅当Redis服务端没有设定版本的时候有效</td>
</tr>
<tr>
<td>writeBuffer={int}</td>
<td>WriteBuffer</td>
<td>4096</td>
<td>设定输出缓冲区的大小，不建议使用，已经标记为[Obsolete]</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>twemproxy：</strong> 由 Twitter 开源的一套代理机制，解决了 Redis 单实例承压问题，可以将多个 redis 服务器作为一个服务器来使用，类似于集群，更多 <a href="https://github.com/twitter/twemproxy/blob/master/notes/redis.md" target="_blank" rel="noopener">关于 twemproxy 可见此</a></li>
<li>默认情况下，当未开启 SSL 时，默认端口号为 6380，当开启 SSL 的时候，默认端口号为 6379。</li>
<li>在使用字符串配置的时候，使用”$”作为前缀来表示 CommandMap，如下：<ul>
<li>通过 CommandMap，可以显式指定哪些命令可用，哪些命令不可用，以及设定命令的别名。</li>
</ul>
</li>
</ul>
<p>例1：禁用 CONFIG，INFO命令</p>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">public RedisClient(IOptions&lt;RedisSettings&gt; redisSettings)
{
    _redisSettings = redisSettings.Value;
    var options = new ConfigurationOptions
    {
        EndPoints =
         {
             { _redisSettings.Address, Convert.ToInt32(_redisSettings.Port) },
             { &quot;127.0.0.1&quot;, 6380 }
         },
        CommandMap = CommandMap.Create(new HashSet&lt;string&gt;
        {
            &quot;CONFIG&quot;,&quot;INFO&quot;
        }, false), //禁用 CONFIG 和 INFO 命令
        KeepAlive = 300,
        DefaultVersion = System.Version.Parse(&quot;5.0.6&quot;)

    };
    var temp = options.ToString();//结果为：&quot;192.168.117.43:6379,127.0.0.1:6380,keepAlive=300,version=5.0.6,$CONFIG=,$INFO=&quot;
    var redis = ConnectionMultiplexer.Connect(options);
    _db = redis.GetDatabase(_redisSettings.DataBase);
}
</code></pre>
<p>例2：通过 CommandMap 来实现禁用命令和设置命令别名<br><img src="https://pic.zhuliang.ltd/20200106143124.png-c" alt></p>
<p></p><p class="code-caption" data-lang="csharp" data-line_number="backend" data-trim_indent="backend" data-label_position="outer" data-labels_left="Code" data-labels_right=":" data-labels_copy="Copy Code"><span class="code-caption-label"></span></p><p></p>
<pre><code class="csharp">public RedisClient(IOptions&lt;RedisSettings&gt; redisSettings)
{
    _redisSettings = redisSettings.Value;
    var options = new ConfigurationOptions
    {
        EndPoints =
         {
             { _redisSettings.Address, Convert.ToInt32(_redisSettings.Port) },
             { &quot;127.0.0.1&quot;, 6380 }
         },
        CommandMap = CommandMap.Create(new Dictionary&lt;string,string&gt;
        {
            {&quot;CONFIG&quot;,string.Empty }, //值为null/string.Empty，均表示禁用该命令
            {&quot;INFO&quot;,&quot;DISP&quot; } //设定INFO的别名为 DISP
        }),
        KeepAlive = 300,
        DefaultVersion = System.Version.Parse(&quot;5.0.6&quot;)
    };

    var temp = options.ToString();//结果为：&quot;192.168.117.43:6379,127.0.0.1:6380,keepAlive=300,version=5.0.6,$CONFIG=,$INFO=DISP&quot;

    var redis = ConnectionMultiplexer.Connect(options);
    _db = redis.GetDatabase(_redisSettings.DataBase);
}
</code></pre>

      

      <div>
        
        <div style="background-color: rgb(255, 23, 0);user-select: auto;height: 3px;width:100%;margin-top: 40px;margin-bottom:15px;"></div>

<!-- <p>常言道：学然后知不足，教然后知困。</p>
<p>我知道你的焦虑，一起共进加油：P</p>
<p>关不关注都无所谓，会根据生活节奏紧凑度定期分享些开发经验、搬砖生涯、痛点、感悟。</p>
<p>
        <img src="https://pic.zhuliang.ltd/20191213133908.gif" alt="欢迎关注我的订阅号：P" />
</p> -->
<ul class="post-copyright" style="margin-left:0px;">
    <li class="post-copyright-author">
        <strong>本文作者：</strong>积慕
    </li>
    <li class="post-copyright-link">
        <strong>本文链接：</strong>
        <a href="/2020/01/backend/StackExchangeRedis-Configuration.html" title="StackExchange.Redis 系列 2：配置">https://blog.zhuliang.ltd/2020/01/backend/StackExchangeRedis-Configuration.html</a>
    </li>
    <li class="post-copyright-license">
        <strong>版权： </strong>
        本站文章均采用 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/cn/" rel="external nofollow"
            target="_blank">CC BY-NC-SA 3.0 CN</a> 许可协议，请勿用于商业，转载注明出处！
    </li>
</ul>
        
      </div>
    </div>

    <footer>
      
      
  
  <div class="categories">
    <a href="/categories/backend/">backend</a>
  </div>

      
  
  <div class="tags">
    <a href="/tags/教程/">教程</a>, <a href="/tags/StackExchange-Redis系列/">StackExchange.Redis系列</a>
  </div>

      <!-- 
  <div class="addthis addthis_toolbox addthis_default_style">
    
    
      <a class="addthis_button_tweet"></a>
    
    
      <a class="addthis_button_google_plusone" g:plusone:size="medium"></a>
    
    
      <a class="addthis_button_pinterest_pinit" pi:pinit:layout="horizontal"></a>
    
    <a class="addthis_counter addthis_pill_style"></a>
  </div>
  <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js"></script>
 -->
      
      <div class="clearfix"></div>
    </footer>
  </div>
</article>

<!-- 
<section id="comment">
  <h1 class="title">留言</h1>

  <div id="vcomments" style="background-color: #fff"></div>
  <script>
    new Valine({
      el: '#vcomments',
      appId: 'aTPKmG6tjDo3CbIXzAPzrj4X-gzGzoHsz',
      appKey: 'hNgWFneNpEcMnBJclPQnDgsd',
      notify: true,
      verify: true, //验证码
      avatar: 'monsterid', //https://valine.js.org/avatar.html
      placeholder: '请输入你的评论'
    })
  </script>
</section>
 --> <!--启用/关闭 LeanCloud 评论--></div></div>
    <aside id="sidebar" class="alignright">
  
<div class="widget tag">
  <h3 class="title"><i class="iconfont icon-category"></i>&nbsp;&nbsp;分类</h3>
  <ul class="entry">
  
    <li><a href="/categories/Obsidian/">Obsidian</a><small>1</small></li>
  
    <li><a href="/categories/PowerUser/">PowerUser</a><small>4</small></li>
  
    <li><a href="/categories/backend/">backend</a><small>57</small></li>
  
    <li><a href="/categories/frontend/">frontend</a><small>9</small></li>
  
    <li><a href="/categories/operations/">operations</a><small>5</small></li>
  
    <li><a href="/categories/提前退休/">提前退休</a><small>2</small></li>
  
  </ul>
</div>


  
<div class="widget tag">
  <h3 class="title"><i class="iconfont icon-new3"></i>&nbsp;&nbsp;最新文章</h3>
  <ul class="entry">
    
      <li>
        <a href="/2024/11/PowerUser/install-docker-in-pve-lxc.html">1. 通过 PVE LXC 搭建 docker 环境</a>
      </li>
    
      <li>
        <a href="/2024/11/Obsidian/obsidian-render-pie-chart.html">2. 2 套用于 obsidian 的生成时间占用饼图脚本示例，基于 templater， charts，echarts+dataview</a>
      </li>
    
      <li>
        <a href="/2024/10/PowerUser/fix-ios18-samba-readonly-issue.html">3. 解决 ios 18（包括ipadOS 18） 下通过文件(files app)连接 samba 服务器，目录变成只读权限的问题</a>
      </li>
    
      <li>
        <a href="/2023/07/operations/how-to-use-pm2.html">4. PM2 的安装、配置和使用</a>
      </li>
    
      <li>
        <a href="/2023/07/backend/expose-intranet-netcoreapi-to-internet.html">5. 通过 DDNS+显性URL 把内网部署的.NET CORE WEBAPI 项目暴露到公网中</a>
      </li>
    
  </ul>
</div>


  
<div class="widget tag">
  <h3 class="title"><i class="iconfont icon-tag"></i>&nbsp;&nbsp;标签</h3>
  <ul class="entry">
  
    <li><a href="/tags/net-core/">.net core</a><small>12</small></li>
  
    <li><a href="/tags/Debian/">Debian</a><small>2</small></li>
  
    <li><a href="/tags/Docker/">Docker</a><small>1</small></li>
  
    <li><a href="/tags/Elasticsearch/">Elasticsearch</a><small>35</small></li>
  
    <li><a href="/tags/Elasticsearch-Nest系列/">Elasticsearch.Nest系列</a><small>35</small></li>
  
    <li><a href="/tags/Obsidian/">Obsidian</a><small>1</small></li>
  
    <li><a href="/tags/PVE/">PVE</a><small>2</small></li>
  
    <li><a href="/tags/StackExchange-Redis系列/">StackExchange.Redis系列</a><small>12</small></li>
  
    <li><a href="/tags/centos/">centos</a><small>3</small></li>
  
    <li><a href="/tags/flex/">flex</a><small>1</small></li>
  
    <li><a href="/tags/ios/">ios</a><small>1</small></li>
  
    <li><a href="/tags/javascript/">javascript</a><small>1</small></li>
  
    <li><a href="/tags/linux/">linux</a><small>4</small></li>
  
    <li><a href="/tags/nginx/">nginx</a><small>2</small></li>
  
    <li><a href="/tags/nuget/">nuget</a><small>2</small></li>
  
    <li><a href="/tags/react/">react</a><small>6</small></li>
  
    <li><a href="/tags/styled-components/">styled-components</a><small>1</small></li>
  
    <li><a href="/tags/内网穿透/">内网穿透</a><small>4</small></li>
  
    <li><a href="/tags/培训讲义/">培训讲义</a><small>2</small></li>
  
    <li><a href="/tags/基础知识/">基础知识</a><small>2</small></li>
  
    <li><a href="/tags/性能优化/">性能优化</a><small>2</small></li>
  
    <li><a href="/tags/教程/">教程</a><small>64</small></li>
  
    <li><a href="/tags/理财/">理财</a><small>2</small></li>
  
    <li><a href="/tags/生命周期/">生命周期</a><small>1</small></li>
  
    <li><a href="/tags/经验/">经验</a><small>4</small></li>
  
  </ul>
</div>


  
  <script type="text/javascript" charset="utf-8" src="/js/tagcloud.js"></script>
  <script type="text/javascript" charset="utf-8" src="/js/tagcanvas.js"></script>
  <div class="widget tag">
    <h3 class="title"><i class="iconfont icon-cloud1"></i>&nbsp;&nbsp;标签云</h3>
    <div id="myCanvasContainer" class="widget tagcloud">
      <canvas width="250" height="250" id="resCanvas" style="width:100%">
        <a href="/tags/net-core/" style="font-size: 17.14px;">.net core</a> <a href="/tags/Debian/" style="font-size: 11.43px;">Debian</a> <a href="/tags/Docker/" style="font-size: 10px;">Docker</a> <a href="/tags/Elasticsearch/" style="font-size: 18.57px;">Elasticsearch</a> <a href="/tags/Elasticsearch-Nest系列/" style="font-size: 18.57px;">Elasticsearch.Nest系列</a> <a href="/tags/Obsidian/" style="font-size: 10px;">Obsidian</a> <a href="/tags/PVE/" style="font-size: 11.43px;">PVE</a> <a href="/tags/StackExchange-Redis系列/" style="font-size: 17.14px;">StackExchange.Redis系列</a> <a href="/tags/centos/" style="font-size: 12.86px;">centos</a> <a href="/tags/flex/" style="font-size: 10px;">flex</a> <a href="/tags/ios/" style="font-size: 10px;">ios</a> <a href="/tags/javascript/" style="font-size: 10px;">javascript</a> <a href="/tags/linux/" style="font-size: 14.29px;">linux</a> <a href="/tags/nginx/" style="font-size: 11.43px;">nginx</a> <a href="/tags/nuget/" style="font-size: 11.43px;">nuget</a> <a href="/tags/react/" style="font-size: 15.71px;">react</a> <a href="/tags/styled-components/" style="font-size: 10px;">styled-components</a> <a href="/tags/内网穿透/" style="font-size: 14.29px;">内网穿透</a> <a href="/tags/培训讲义/" style="font-size: 11.43px;">培训讲义</a> <a href="/tags/基础知识/" style="font-size: 11.43px;">基础知识</a> <a href="/tags/性能优化/" style="font-size: 11.43px;">性能优化</a> <a href="/tags/教程/" style="font-size: 20px;">教程</a> <a href="/tags/理财/" style="font-size: 11.43px;">理财</a> <a href="/tags/生命周期/" style="font-size: 10px;">生命周期</a> <a href="/tags/经验/" style="font-size: 14.29px;">经验</a>
      </canvas>
    </div>
  </div>




</aside>
    <div class="clearfix"></div>
  </div>
  <footer id="footer" class="inner"><div class="alignleft">

  
  &copy; 2018 - 2024 &nbsp;<a href='/about'>积慕</a>
  
  &nbsp;&nbsp;<a href='https://www.cnblogs.com/deepthought/'>我的博客园地址</a>
  &nbsp;&nbsp;finalclassic#outlook.com
</div>

<div class="clearfix"></div>
<div>
  本站主题基于：<a href='https://github.com/hexojs/hexo-theme-light' rel="external nofollow">hexo-theme-light</a>
</div>
<div id="busuanzi_container_site_pv">
  本站总访问量&nbsp;<span id="busuanzi_value_site_pv"></span>&nbsp;次
</div>
<div style="width:300px;margin:0 auto; padding:20px 0;">
  <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011702004805" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;">
    <img src="https://pic.zhuliang.ltd/20200102164648.png" style="float:left;"><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">沪公网安备 31011702004805号</p></a>
</div></footer>
  <script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>




<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
(function($){
  $('.fancybox').fancybox();
})(jQuery);
</script>


<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>

<!-- <script src="/js/busuanzi.pure.mini.js"></script> -->
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<script>
    var _hmt = _hmt || [];
    (function () {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?ea793b9c8d6b31df666a6bc15038e246";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
<script>
    (function () {
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        }
        else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
</script>
</body>
</html>
